/* Yet Another Experimental Software Renderer
 *
 * Copyright (c) 2010 Pawel "Hery" Dziepak
 */

#ifndef PIXEL_SHADER_H_
#define PIXEL_SHADER_H_

#include "primitives.h"
#include "utils.h"
#include "texture_sampler.h"

#include <stdlib.h>

namespace yaesr {
	class pixel_shader {
	public:
		virtual color execute(texel) = 0;
	};

	class pixel_shader_impl : public pixel_shader {
	public:
		color execute(texel in);

		void set_texture(texture_sampler *ts) {
			Assert(ts != NULL);

			tex0 = ts;
		}
	private:
		texture_sampler *tex0;
	};

	class pixel_shader_impl2 : public pixel_shader {
	public:
		color execute(texel in);
	};
}

#endif